package itheima04;
import com.mchange.v2.c3p0.*;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;

/*
    使用JDBC进行增删改查,需要频繁的获取和销毁连接Connection对象,消耗系统资源
    连接池: 用来管理连接对象
    Oracle公司,制定一套连接池的规范/规则/标准
    javax.sql.DataSource接口: 连接池/数据源
    抽象方法:
    public abstract Connection getConnection(): 获取连接Connection对象

    所以只要是连接池,必然实现DataSource接口,覆盖重写getConnection方法,获取连接对象

    C3P0既然是连接池,就必然实现DataSource接口,覆盖重写getConnection方法
    也就是肯定有一个类实现DataSource接口,覆盖重写getConnection方法

    通过查看API,发现有个类ComboPooledDataSource,实现了DataSource接口,父类也重写了getConnection方法
    也就是创建ComboPooledDataSource类对象,就是在创建连接池对象

    连接池的使用步骤:
    1.创建连接池对象
    2.连接池对象,调用getConnection方法,获取连接Connection对象
 */
/*public class Demo04C3P0 {

    public static void main(String[] args) throws Exception {
        //创建C3P0连接池的对象,内部存储了多个Connection对象
        ComboPooledDataSource cpds = new ComboPooledDataSource();
        //设置驱动类名
        cpds.setDriverClass( "com.mysql.jdbc.Driver" );
        //设置数据库的连接地址
        cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/day19" );
        //设置用户名
        cpds.setUser("root");
        //设置密码
        cpds.setPassword("abc");

        //连接池对象,调用getConnection()方法,获取连接Connection对象
        Connection con = cpds.getConnection();
        System.out.println(con);
    }

}*/
public class Demo04C3P0 {
    public static void main(String[] args) throws PropertyVetoException, SQLException {

        ComboPooledDataSource cpds = new ComboPooledDataSource();
        cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver
        cpds.setJdbcUrl("jdbc:mysql://localhost:3306/day19");
        cpds.setUser("root");
        cpds.setPassword("root");

        Connection connection=cpds.getConnection();
        System.out.println(connection);
    }
}